#include "Lista.h"
#include "Pila.h"
#include "Nodo.h"
#include <iostream>
#include <stdlib.h>
using namespace std;

int menu();

int main()
{
    int op, cod;
    string nom;
    Lista* ListaEnlazada = new Lista();
    Nodo* Dato = new Nodo();
    Pila* PilaDatos = new Pila();
    do{
        op = menu();
        switch (op){
            case 1:
                    cout<<"\n\nINGRESAR DATO\n\n";
                    cout<<" Digite el codigo: ";
                    cin>>cod;
                    cout<<" Digite el nombre: ";
                    cin>>nom;

                    Dato = new Nodo();
                    Dato->setCodigo(cod);
                    Dato->setNombre(nom);
                    ListaEnlazada->AgregarFinal(Dato);
                    break;
            case 2:{
                    cout<<"\n\nVER ESTA LISTA\n\n";
                    Nodo* Tem=ListaEnlazada->getCabeza();
                    while(Tem!=NULL){
                        cout<<" > Codigo: "<<Tem->getCodigo()<<", Nombre: "<<Tem->getNombre()<<endl;
                        Tem=Tem->getSiguiente();
                    }
                    cout<<endl;
                    system("PAUSE");
                    break;
                    }
            case 3:{
                    cout<<"\n\nINVERTIR LA LISTA \n\n";
                    Nodo* Tem=ListaEnlazada->getCabeza();
                    while(Tem!=NULL){
                        PilaDatos->Agregar(Tem);
                        Tem=Tem->getSiguiente();
                    }

                    ListaEnlazada = new Lista();

                    while(PilaDatos->getTotalNodos() != 0){
                        Tem = new Nodo();
                        Tem->setCodigo(PilaDatos->getTope()->getCodigo());
                        Tem->setNombre(PilaDatos->getTope()->getNombre());
                        ListaEnlazada->AgregarFinal(Tem);
                        PilaDatos->Quitar();
                    }
                    cout<<"\nEXITO: Lista invetida\n\n";
                    system("PAUSE");
                    break;
            }

        }
    }while(op != 4);

    return 0;
}

int menu(){
    system("cls");
    int op;
    cout<<"UNIVERSIDAD DE CORDOBA-SEDE LORICA\nPROGRAMACION II - LISTAS - PILAS\n\n";
    cout<<" 1. Ingresar dato\n";
    cout<<" 2. Ver lista actual\n";
    cout<<" 3. Invertir lista\n";
    cout<<" 4. Salir\n";
    do{
        cout<<"\nEscoja una opcion: ";
        cin>>op;
    }while(op < 1 || op > 4);
    return op;
}
